package com.itboye.ihomebank.interfaces;

/***
 * 用户登陆注册修改相关接口类
 * 
 * @author admin
 * 
 * @param <GoodsListModel>
 */
public interface IUserInterface<GoodsListModel> {
	/**
	 * 登录
	 */
	void login(String userName, String pwd);

	/**
	 * 发送短信
	 */
	void send(String phone, String code);

	/**
	 * 验证验证码是否正确
	 */
	void verification(String mobile, String code_type, String code);

	/**
	 * 注册
	 * 
	 * @param reg_type
	 *            注册类型 【1=> 用户名,3: 手机号(默认)】
	 * @param from
	 *            注册来源 【0=>内部(默认),1=>QQ,2=>微信,3=>新浪,4=>百度,5=>淘宝,99=>其他应用】
	 * @param code
	 *            手机验证码
	 * @param username
	 *            登录账户名，根据注册类型判断，若reg_type=3,则账户格式必须为手机格式（11位数字）
	 * @param password
	 *            密码
	 */
	void register(String reg_type, String from, String code, String username,
			String password);

	/**
	 * 手机找回密码
	 * 
	 * @param mobile
	 *            手机
	 * @param code
	 *            验证码
	 * @param psw
	 *            新密码
	 */
	void backPass(String mobile, String code, String psw);

	/**
	 * 修改性别
	 * 
	 * @param uid
	 * @param sex
	 */
	void updateSex(String uid, String sex);

	/**
	 * 修改昵称
	 * 
	 * @param uid
	 * @param nickname
	 */
	void updateNickname(String uid, String nickname);

	/**
	 * 修改头像
	 * 
	 * @param uid
	 * @param type
	 */
	void updateHead(String uid, String type, String image);

	void getConfig();

	/***
	 * 绑定手机(更换绑定)
	 * 
	 * @param phone
	 * @param code
	 * @param isChange
	 */
	// void bindPhone(String uid, String phone, String code, boolean isChange);
	void bindPhone(String uid, String phone, String code, String password,
			boolean isChange);

	/***
	 * 通过密码找回密码
	 * 
	 * @param uid
	 * @param oldPassword
	 * @param newPassword
	 */
	void updatePwdByPwd(String uid, String oldPassword, String newPassword);

	/***
	 * 通过密码找回密码
	 * 
	 * @param uid
	 * @param oldPassword
	 * @param newPassword
	 */
	void updatePwdByPhone(String uid, String mobile, String code,
			String newPassword);

	/***
	 * 获取系统消息
	 * 
	 * @param uid
	 * @param msgType
	 */
	void systemMessage(String uid, String msgType);

	/***
	 * 获取方向
	 */
	void getDirection();

	/**
	 * 房源发布
	 * 
	 * @param uid
	 *            发布人UID
	 * @param imgs
	 *            图片ID,多个,分割
	 * @param community_id
	 *            小区code
	 * @param rent_type
	 *            出租方式 : 【1=>整租,2=>合租-主卧,3=>合租-次卧】
	 * @param contact_name
	 *            联系人姓名
	 * @param contact_phone
	 *            联系人手机号码
	 * @param rent
	 *            租金,分,int
	 * @param size
	 *            面积,平米,int
	 * @param unit
	 *            户型，【1,0,0】 几室,几厅,几卫
	 * @param house_floor
	 *            楼层,int
	 * @param floors
	 *            总楼层,int
	 * @param house_decoration
	 *            装修程度,int，dtree:house_decoration
	 * @param house_pay
	 *            支付方式,多个,分割,dtree:house_pay
	 * @param house_dir
	 *            朝向，dtree:house_orientation
	 * @param address
	 *            房源详细地址
	 * @param entrust_money
	 *            佣金
	 * @param house_feature
	 *            房源特色，多个,分割,,dtree:house_feature
	 * @param house_device
	 *            配套设备,多个,分割,,dtree:house_device
	 */
	void getHouseAdd(String uid, String imgs, String community_code,
			int rent_type, String contact_name, String contact_phone,
			String rent, String size, String unit, String house_floor,
			String floors, String house_decoration, String house_pay,
			String house_dir, String address, String entrust_money,
			String house_feature, String house_device, String addressdetail,String house_no,String deposit);

	/**
	 * 实名认证
	 * 
	 * @param uid
	 *            UID
	 * @param realname
	 *            真实名字
	 * @param ibnumber
	 *            身份证号
	 * @param code
	 *            验证码
	 */
	void getRealName(String uid, String realname, String idnumber,
			String bank_no, String bank_phone, String code);

	/**
	 * 消息分页查询
	 * 
	 * @param uid
	 *            用户ID
	 * @param msg_type
	 *            消息类型【1=>系统消息，2=>预约消息,3=>签约消息,4=>智能锁消息】
	 * @param page_no
	 *            页码
	 * @param page_size
	 *            页码大小
	 */
	void getSystemMess(String uid, String msg_type, String page_no,
			String page_size);

	/**
	 * 绑定科技侠账号
	 * 
	 * @param uid
	 * @param isBind
	 *            true:bind false:unbind
	 */
	void bindKeJiXia(String uid, boolean isBind);

	/**
	 * 我的钥匙
	 * 
	 * @param uid
	 */
	void myKey(String uid);

	/**
	 * 修改门锁信息
	 * 
	 * @param uid
	 *            UID
	 * @param lockId
	 *            锁ID
	 * @param alias
	 *            要修改的锁别名
	 */
	void updateKey(String uid, String lockId, String alias);

	/**
	 * 获取合同参数
	 * 
	 * @param subject
	 *            传为0
	 */
	void heTongParams(String subject,String contract_no);

	/**
	 * 提交填写的合同
	 * 
	 * @param uid
	 * @param contractNo
	 * @param params
	 */
	void tiJiaoHeTong(String uid, String contractNo, String params);

	/**
	 * 确认合同
	 * 
	 * @param uid
	 * @param contractNo
	 */
	void wanChengHeTong(String uid, String contractNo);

	/**
	 * 签约详情
	 * 
	 * @param uid
	 * @param contractNo
	 */
	void qianyueDetail(String uid, String contractNo);

	/**
	 * 我的收藏
	 * 
	 * @param uid
	 * @param status
	 */
	void myCollection(String uid, String status);

	/**
	 * 获取云旺联系人
	 * 
	 * @param uid
	 * @param startDate
	 * @param endDate
	 */
	void getYWContactName(String uid, String startDate, String endDate);

	/**
	 * 发送私信
	 * 
	 * @param uid
	 * @param toUid
	 * @param msg
	 */
	void siLiao(String uid, String toUid, String msg);

	/**
	 * 获取云旺私聊历史
	 * 
	 * @param uid
	 * @param toUid
	 * @param begin
	 * @param end
	 * @param count
	 * @param next
	 */
	void getSiXinHistory(String uid, String toUid, String begin, String end,
			String count, String next);

	/**
	 * 发送钥匙
	 * 
	 * @param uid
	 * @param toUid
	 * @param lockId
	 * @param start
	 * @param end
	 * @param mark
	 */
	void sendKey(String uid, String toUid, String lockId, String start,
			String end, String mark);

	/**
	 * 发送密码
	 * 
	 * @param uid
	 * @param toUid
	 * @param lockId
	 * @param start
	 * @param end
	 */
	void sendPwd(String uid, String toUid, String lockId, String start,
			String end);

	/**
	 * 开锁记录
	 * 
	 * @param uid
	 * @param lockId
	 * @param page
	 * @param pageSize
	 */
	void keisuojilu(String uid, String lockId, String page, String pageSize);

	/**
	 * 锁的钥匙列表
	 * 
	 * @param uid
	 * @param lockId
	 */
	void keyOfLock(String uid, String lockId);

	/**
	 * 删除钥匙
	 * 
	 * @param uid
	 * @param toUid
	 * @param keyId
	 * @param lockId
	 */
	void deleteKey(String uid, String toUid, String keyId, String lockId);

	/**
	 * 解绑管理员
	 * 
	 * @param uid
	 * @param lockId
	 */
	void unbindLock(String uid, String lockId);

	/**
	 * 下载钥匙
	 * 
	 * @param uid
	 * @param keyId
	 * @param lockId
	 */
	void downLoadKey(String uid, String keyId, String lockId);

	/**
	 * 冻结钥匙（解冻钥匙）
	 * 
	 * @param uid
	 * @param toUid
	 * @param keyId
	 * @param lockId
	 * @param type
	 *            0：解冻钥匙 1：冻结钥匙
	 */
	void lockKey(String uid, String toUid, String keyId, String lockId, int type);

	/**
	 * 修改支付密码
	 * 
	 * @param uid
	 *            id
	 * @param old_psw
	 *            新密码
	 * @param new_psw
	 *            旧密码
	 */
	void updataZhiFu(String uid, String old_psw, String new_psw);

	/**
	 * 验证支付密码
	 * 
	 * @param uid
	 * @param psw
	 */
	void ZhiFuPassYanZheng(String uid, String psw);

	/**
	 * 授权新用户
	 * 
	 * @param uid
	 * @param toUid
	 * @param lockId
	 * @param keyId
	 * @param startDate
	 * @param endDate
	 */
	void shouquan(String uid, String toUid, String lockId, String keyId,
			String startDate, String endDate);

	/**
	 * 上传开锁记录
	 * 
	 * @param uid
	 * @param lockId
	 * @param success
	 * @param opTime
	 * @param quentity
	 */
	void uploadHistoryOfUnlock(String uid, String lockId, String success,
			String opTime, String quentity);

	/**
	 * 最新支付
	 * 
	 * @param uid
	 * @param pay_code_type
	 * @param items
	 * @param pay_type
	 * @param wallet_pay_money
	 * @param wallet_only
	 *            传1代表余额支付
	 */
	void payHouse(String uid, String pay_code_type, String items,
			String pay_type, String wallet_pay_money, String money,
			String wallet_only);

	/**
	 * 我的余额
	 * 
	 * @param uid
	 */
	void myWallet(String uid);

	/**
	 * 修改支付密码
	 * 
	 * @param uid
	 * @param oldPsw
	 * @param newPsw
	 */
	void updateWalletPsw(String uid, String oldPsw, String newPsw);

	/**
	 * 验证支付密码
	 * 
	 * @param uid
	 * @param oldPsw
	 * @param newPsw
	 */
	void yzWalletPsw(String uid, String psw);

	/**
	 * 绑定银行卡
	 * 
	 * @param uid
	 *            用户id
	 * @param bank_no
	 *            银行卡号
	 * @param bank_account
	 *            是 银行卡绑定姓名
	 * @param bank_cert
	 *            银行绑定身份证号
	 * @param bank_phone
	 *            银行卡绑定手机号
	 * @param bank_cvv
	 *            否 信用卡后三位
	 * @param bank_yxq
	 *            信用卡有效期
	 */
	void bindBankCard(String uid, String bank_no, String bank_account,
			String bank_cert, String bank_phone, String bank_cvv,
			String bank_yxq);

	/**
	 * 获取银行卡的类型
	 * 
	 * @param bankNo
	 */
	void getBankType(String bankNo);

	/**
	 * 获取已绑定银行卡列表
	 * 
	 * @param uid
	 */
	void bankList(String uid);

	/**
	 * 解除绑定银行卡
	 * 
	 * @param uid
	 * @param bankNo
	 */
	void unbindBankCard(String uid, String bankNo);

	/**
	 * 申请提现
	 * 
	 * @param uid
	 * @param money
	 * @param cardNo
	 */
	void tixian(String uid, String money, String cardNo);

	/**
	 * 融丰发起支付
	 * 
	 * @param uid
	 * @param code
	 * @param bankId
	 */
	void rfPay(String uid, String code, String bankId);

	void lunbo(String position);

	/**
	 * 验证融丰支付
	 * 
	 * @param orderNo
	 * @param yzm
	 */
	void sendRf(Object orderCode, String code);

	/**
	 * 验证余额支付
	 * 
	 * @param uid
	 * @param password
	 */
	void yueYanzheng(String uid, String password);

	/**
	 * 小区走势图
	 * 
	 * @param community_id
	 * @param chart_type
	 * @param which
	 * @param house_room
	 */
	void zoushi(String community_id, String chart_type, String which,
			String house_room);

	/**
	 * 获取手机对应的账户
	 * 
	 * @param phone
	 */
	void queryUserByPhone(String phone);

	/**
	 * 转账
	 * 
	 * @param uid
	 * @param to_account
	 * @param balance
	 * @param trans_type
	 */
	void zhuanzhang(String uid, String to_account, String balance,
			String trans_type);

	/**
	 * 获取个人数据
	 * 
	 * @param uid
	 */
	void getPersonData(String uid);
}
